package com.dxx.cloud.admin.utils;

import org.springframework.util.ObjectUtils;

import java.math.BigDecimal;

public class BigDecimalUtils {

    public static BigDecimal add(BigDecimal a,BigDecimal b){
        if(ObjectUtils.isEmpty(a)){
            a = BigDecimal.ZERO;
        }
        if(ObjectUtils.isEmpty(b)){
            b = BigDecimal.ZERO;
        }
        return a.add(b);
    }

    public static BigDecimal addTwo(BigDecimal a,BigDecimal b,BigDecimal c){
        if(ObjectUtils.isEmpty(b) || b.equals(BigDecimal.ZERO)){
            b = c;
        }
        return add(a,b);
    }

    public static BigDecimal divide(BigDecimal a,BigDecimal b){
        if(ObjectUtils.isEmpty(a)){
            a = BigDecimal.ZERO;
        }
        if(ObjectUtils.isEmpty(b) || b.compareTo(BigDecimal.ZERO) == 0){
            b = BigDecimal.ONE;
        }
        return a.divide(b,2,BigDecimal.ROUND_HALF_UP);
    }

    public static BigDecimal multipy(BigDecimal a, BigDecimal b) {
        if(ObjectUtils.isEmpty(a)){
            a = BigDecimal.ZERO;
        }
        if(ObjectUtils.isEmpty(b)){
            b = BigDecimal.ZERO;
        }
        return a.multiply(b);
    }

    public static BigDecimal multipyTwo(BigDecimal a, BigDecimal b, BigDecimal c) {
        if(ObjectUtils.isEmpty(b) || b.equals(BigDecimal.ZERO)){
            b = c;
        }
        return multipy(a,b);
    }

    public static BigDecimal subtract(BigDecimal a, BigDecimal b){
        if(ObjectUtils.isEmpty(a)){
            a = BigDecimal.ZERO;
        }
        if(ObjectUtils.isEmpty(b)){
            b = BigDecimal.ZERO;
        }
        return a.subtract(b);
    }

    public static BigDecimal build(String value,BigDecimal defaultValue){
        BigDecimal result = null;
        try {
            result = new BigDecimal(value);
        }catch (Exception e){
            result = defaultValue;
        }
        return result;
    }
    public static BigDecimal build(Integer value,BigDecimal defaultValue){
        BigDecimal result = null;
        try {
            result = new BigDecimal(value);
        }catch (Exception e){
            result = defaultValue;
        }
        return result;
    }
}
